import { IPSDEAction } from '../action/ipsdeaction';
import { IPSDEMapObject } from './ipsdemap-object';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEMapAction
 */
export interface IPSDEMapAction extends IPSDEMapObject {
  /**
   * 目标实体行为
   *
   * @type {IPSDEAction}
   */
  getDstPSDEAction(): IPSDEAction | null;

  /**
   * 目标实体行为
   *
   * @type {IPSDEAction}
   */
  get dstPSDEAction(): IPSDEAction | null;

  /**
   * 目标实体行为（必须存在）
   *
   * @type {IPSDEAction}
   */
  getDstPSDEActionMust(): IPSDEAction;

  /**
   * 映射模式
   * @description 值模式 [实体映射处理映射模式] {DEFAULT：默认、 INNER：内部处理 }
   * @type {( string | 'DEFAULT' | 'INNER')}
   * @default DEFAULT
   */
  mapMode: string | 'DEFAULT' | 'INNER';

  /**
   * 映射动态参数
   * @type {IModel}
   */
  mapParams: IModel;

  /**
   * 源实体行为
   *
   * @type {IPSDEAction}
   */
  getSrcPSDEAction(): IPSDEAction | null;

  /**
   * 源实体行为
   *
   * @type {IPSDEAction}
   */
  get srcPSDEAction(): IPSDEAction | null;

  /**
   * 源实体行为（必须存在）
   *
   * @type {IPSDEAction}
   */
  getSrcPSDEActionMust(): IPSDEAction;
}
